home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / GRAHAM / XA_6B.ZIP / DOCS / HISTORY.TXT < prev    next >
Encoding:
Text File  |  1996-10-21  |  64.5 KB  |  1,447 lines

  1. Development Log for XaAES
  2.  
  3. It's a big job....but someone had to do it :)
  4.  
  5. [27/9/95]
  6. o Began coding XaAES kernal. Where to begin?
  7.  
  8. [28/9/95]
  9. o Coded alert parser (seemed an easy place to start)
  10. o 3d sculpted dialogs.
  11. o VDI calls from the auto folder/MiNT.CNF now work.
  12. o Auto-folder detection.
  13.  
  14. OK, perhaps I should get the kernal stuff working before messing about in
  15. the actual GUI bits....
  16.  
  17. [2/10/95]
  18. o TRAP intercept now works and gets correct parameters from standard AES
  19.   calls.
  20.  
  21. [3/10/95]
  22. o TRAP intercept now returns values correctly.
  23. o Can now do form_alert calls to XaAES in place of GEM.
  24. o For testing, XaAES currently uses trap 3 instead of trap 2 to allow it to
  25.   be debugged under MultiTOS (until I've got it working far enough to replace
  26.   MultiTOS as my default enviroment).
  27.  
  28. [5/10/95]
  29. o AES kernal now creates the XaAES.cmd command pipe & blocks waiting for
  30.   instructions to arrive.
  31.  
  32. [7/10/95]
  33. o appl_init() call now works from other process' and correctly creates
  34.   a reply pipe for that application, then returns the application's AES id
  35.   (which is (under XaAES) the same as the MiNT process id).
  36.  
  37. [8/10/95]
  38. o Coded the kernal's opcode->function jump table structure.
  39. o Client's now block waiting for reply from the AES server, and actually
  40.   get the right replies. As soon as client blocks on the reply pipe,
  41.   MiNT task switches, allowing the AES server to get in - and other
  42.   process' as well :) .
  43. o appl_exit() stub added.
  44. o form_alert() now works via the XaAES pipes interface.
  45. o Tested with XaAES as sole GUI server without MultiTOS - seems to work ok
  46.   with two client applications at the same time.
  47.  
  48. [11/10/95]
  49. o Mouse Server coded to handle mouse button clicks without busy waiting
  50.   in the AES kernal - this also prevents clicks being missed (they may
  51.   get delayed slightly, but never lost).
  52.   XaAES spawns MOUSESRV at boot time, and MOUSESRV communicates with XaAES
  53.   kernal via the standard XaAES.cmd pipe using a special op-code and
  54.   AESCMD_NOREPLY mode (direct pipe access, not going via the trap interface).
  55.  
  56. Now that the bare-bones kernal is up & running and the trap-to-pipe interface
  57. is working, I can get on and do the interesting bits :)
  58.  
  59. [12/10/95]
  60. o Added evnt_button() code (allows multiple apps to wait on mouse events).
  61.  
  62. [13/10/95]
  63. o Began coding windowing system. Not sure how to approach the look & feel
  64.   here. I've got some funky sculpted 3D routines, so I'll use them until they
  65.   get slammed for being to slow.
  66.  
  67. [18/10/95]
  68. o Internal wind_find() now works
  69. o Moved over to a special mouse packet format for communication between
  70.   MOUSESRV & XaAES.
  71. o MOUSESRV now reports coords, an double click timing is much better.
  72. o evnt_button() now correctly returns mouse coords to client app.
  73. o wind_create() and window_open() op-codes now supported.
  74.  
  75. [20/10/95]
  76. o evnt_button() now only returns events for clicks on the client applications
  77.   windows
  78.  
  79. [23/10/95]
  80. o wind_close() now supported.
  81. o graf_mouse() now fully supported.
  82. o Mouse cursor enabled when XaAES run from the console without a standard
  83.   Atari AES loaded.
  84. o Client reply pipe is now opened as a local file handle for the client and
  85.   the server (via a new XA_NEW_CLIENT op-code), instead of as a pair of
  86.   global file handles. This allows loads more clients to run at once, as
  87.   the limited number of global file handles isn't used up. I've managed
  88.   30 concurrent applications with no slow-down at all!!!! This is looking
  89.   faster than Geneva, and almost quick enough to catch MagiC (and pisses on
  90.   AES4.1).
  91. o Added an new op-code XA_CLIENT_EXIT to tell the server to close it's end
  92.   of a client reply pipe (allows re-use of the file handle for a new process).
  93.  
  94. [24/10/95]
  95. o Click on widgets no longer generates a button event to the application, it
  96.   now calls the appropriate callback to handle the widget.
  97.  
  98. [25/10/95]
  99. o graf_handle() now supported
  100. o graf_mkstate() now supported
  101. o Window dragging is now supported (with a nice custom mover mouse shape).
  102.  
  103. [30/10/95]
  104. o wind_set() now supported
  105.  
  106. [1/11/95]
  107. o Moved over to a faster (and simpler) system for handling clients waiting for
  108.   different types of event. I used to use a queue system, now I just set a flag
  109.   in the client descriptor.
  110. o Coded AES messaging system.
  111. o evnt_mesag() now supported
  112.  
  113. [3/11/95]
  114. o Close widget now sends WM_CLOSED message to the client, and changes state
  115.   when clicked on.
  116. o Mover now sends WM_MOVED message to the client.
  117. o wind_set(..,WF_CURRXYWH,...) in response to a WM_MOVED message now works.
  118.  
  119. [4/11/95]
  120. o Rectangle list generation implemented.
  121. o Background window moves work correctly.
  122. o Click on title bar now tops a window correctly.
  123.  
  124. [5/11/95]
  125. o Fixed most of the redraw bugs with windows.
  126. o The client closedown routine now delete's all an apps open windows, and
  127.   deletes pending AES messages.
  128. o Multiple application tests work fine - got 10 programs with two windows each
  129.   running - no slowdown at all, and all seems to work fine.
  130.  
  131. [6/11/95]
  132. o Finally tried running on trap 2 instead of trap 3, and found I'd forgotten
  133.   that the VDI and the AES share a trap - oops. Added code in the low-level
  134.   handler to field VDI requests to the old trap2 vector. It's a little (well a
  135.   lot) of a kludge
  136.   - there's even a spot of self modifying code in there.....but it does work.
  137. o Linked the test app with ordinary GEM libraries and test ran. The same
  138.   executable definitely runs under AES4.1, TOS4.02 and XaAES without any
  139.   problems - so it's looking good :).
  140. o Stopped using trap 3 for testing now that enough of the system is working to
  141.   interact with.
  142. o wind_get() now supported.
  143. o wind_set(..,WF_BOTTOM,...) added.
  144. o wind_find() now supported.
  145. o Windows can now only be moved if their MOVER attribute is set (even if they
  146.   have a title bar).
  147. o Coded screen and mouse locking.
  148. o wind_update() now supported.
  149. o Using wind_get(...,WF_FIRSTXYWH,...) to walk the rectangle list now works.
  150. o Added compile time switch FORCE_WINDOWS. If set to 1 then user operations on
  151.   windows are done immediately, and the client program is sent a message just
  152.   to say that it has happened (allows windows from apps that are deep in
  153.   thought to be shifted around while we wait for the app to get back to us).
  154. o Added the resizer widget.
  155.  
  156. [7/11/95]
  157. o Each client app can now have it's own totally seperate mouse cursor shape.
  158.   The one that is actually used is determined by the owner of the top window
  159.   - or if there are no windows open, then by the usual GEM free-for-all method.
  160.   As soon as a window is opened, the owner's cursor takes over.
  161. o wind_set(..,WF_NAME,...) now works (ish).
  162.  
  163. [8/11/95]
  164. o WM_REDRAW messages are now sent to clients when a redraw is needed.
  165.  
  166. =================================================================
  167. **                    MINIX PARTITION CRASHED                  **
  168. ** Gotta redo the AES messaging - I should backup more often.  **
  169. =================================================================
  170.  
  171. [12/11/95]
  172. o Got rid of the busy wait loop in the mouse server by using /dev/mouse to wait
  173.   for the initial mouse click, then using VDI vectors to do the double click
  174.   timing.
  175.  
  176. [13/11/95]
  177. o Moved over to using /dev/mouse fully for the mouse handling.
  178. o Added a bit of a hack (using a stable, compatible method so don't worry) to
  179.   insert coordinates and button states from /dev/mouse into the VDI's internal
  180.   mouse handling routines.
  181.  
  182. [14/11/95]
  183. o Ditched /dev/mouse again 'coz it's to much hassle to use at the moment.
  184. o graf_dragbox() now supported.
  185. o graf_rubberbox() now supported.
  186.  
  187. [16/11/95]
  188. o Sizer widget now sends a WM_SIZED message to the client.
  189. o Fixed evnt_button() click to return correct keyboard shift status.
  190. o Click on top window's title bar sends window to the back using a WM_BOTTOMED
  191.   message.
  192.  
  193. [17/11/95]
  194. o Now using animated colour bitmaps for the standard GEM window widgets.
  195.   Very nice looking :) It's also a fair bit faster than drawing them by hand
  196.   like I was before, but is a great deal nicer than just having a single
  197.   character like in other AES's.
  198. o User work area support added.
  199. o wind_get(.., WF_WORKXYWH, ...) now works.
  200. o Title bar highlighting for top window.
  201. o XaAES logo added to title bar, selected when moving windows.
  202. o Added FULLER widget.
  203.  
  204. [18/11/95]
  205. o wind_get(.., WF_PREVXYWH, ...) now works
  206. o wind_get(.., WF_FULLXYWH, ...) now works
  207. o Click on FULLER widget now sends WF_FULLED message to client.
  208.  
  209. [22/11/95]
  210. o Added horizontal and vertical scroll arrow widgets.
  211.  
  212. [23/11/95]
  213. o Scroll widgets now send WM_ARROWED messages.
  214. o Added an active/pending widget attribute to the client descriptor to help
  215.   support repeated sends from a widget that is held down (ie. the scroll
  216.   arrows).
  217. o Fixed widget redraws when selecting in the background.
  218.  
  219. [26/11/95]
  220. o Added slider bars to windows.
  221. o Much to my suprise, I found that to a great extent XaAES works in all screen
  222.   modes - I've tested these modes:
  223.    ST-Low
  224.    ST-high
  225.    832*620 mono
  226.    800*600 4 colour
  227.    800*600 16 colour
  228.   They all run, ST-Low is unusable - widgets are too big.
  229.   The mono & 4 colour modes will need a little work, as all the 3D sculpting
  230.   just comes out as black, but the widget bitmaps display OK (but in black
  231.   & white) - a special mono version may be in order to make things more
  232.   presentable.....
  233.  
  234. [27/11/95]
  235. o Slider bars now actually slide :) - and they send the appropriate
  236.   WM_HSLID/WM_VSLID messages to the client.
  237.  
  238. ==============================================================================
  239. I've now missed the first release date I promised - this is a definitely a
  240. REAL atari program now ;)
  241. (I could even go on to found Microsod Mk2 at this rate)
  242. ==============================================================================
  243.  
  244. [7/12/95]
  245. o Added a XaAES logo displayed at startup (actually it's a seperate program
  246.   spawned during the boot sequence). Not very constructive I know, but it does
  247.   look quite pretty
  248.  
  249. [8/12/95]
  250. o Ditched the slider bar handling as I wasn't happy with it, and coded a
  251.   replacement.
  252.  
  253. [9/12/95]
  254. o XaAES changes it's process priority to -20 on startup (ie. highest priority).
  255.   This improves performance loads, and doesn't slow down other programs, as
  256.   XaAES spends most of it's time blocked anyway...but when you need it, it
  257.   responds faster now.
  258.  
  259. [10/12/95]
  260. o Got the Atari Compendium....
  261. o Fixed appl_init() to fill in the globl array correctly.
  262. o Added wind_delete() call.
  263. o Added wind_new() call.
  264. o wind_get/set(.., WF_HSLIDE, ...) now works
  265. o wind_get/set(.., WF_VSLIDE, ...) now works
  266. o wind_get/set(.., WF_HSLSIZE, ...) now works
  267. o wind_get/set(.., WF_VSLSIZE, ...) now works
  268.  
  269. ==============================================================================
  270. Definitely suffering from binary bloat - the Kernal is now a 51K binary...
  271. ==============================================================================
  272.  
  273. [13/12/95]
  274. o Added info bar widget.
  275. o wind_set(.., WF_INFO, ...) now works
  276.  
  277. [20/12/95]
  278. o Added evnt_timer() handling via the MiNT SIGALRM signal.
  279.   At the moment this only gives a resolution of one second, as I used the
  280.   Talarm() function to implement it - I'll replace this with a custom
  281.   vex_timv() routine that gives a better resolution at a later date as this
  282.   makes things like LINES seem dead slow 'coz the shortest timeout from an
  283.   evnt_multi() is 1 second.
  284.  
  285. [28/12/95]
  286. o Added evnt_keybd() using the /dev/console device.
  287. o Added use of Fselect() to block on the console device & the AES message pipe
  288.   at the same time.
  289. o Added evnt_multi().
  290. o Added a 'xaaes.cnf' file parser (compatible with GEM.CNF) that allows
  291.   programs to be auto-run by XaAES when it starts up.
  292.  
  293. [29/12/95]
  294. o Added rsrc_load() based on the resource handler from Steve Sowerby's AGiLE
  295.   library.
  296. o Added rsrc_gaddr()
  297. o Added rsrc_free()
  298. o Debugged the keyboard handling & added a kludge to cope with the MiNT Fselect
  299.   bug.
  300.  
  301. ====================
  302. New Year's......2 weeks drunk!!!
  303. ====================
  304.  
  305. [12/1/96]
  306. o Bit of a gap there..... ;)
  307. o Fixed the resource loader
  308. o Added the basic objc_draw() tree handler routine.
  309. o Added rsrc_obfix()
  310. o Added some extra debugging facilities - a DEBUG command in the xaaes.cnf file
  311.   allows xaaes' console output to be re-directed to any file or device (I use it
  312.   to dump debug to my Wyse terminal via the serial port).
  313.  
  314. [16/1/96]
  315. o Added objc_offset()
  316. o Added wind_find()
  317. o Finally got a 'real' GEM program to run on XaAES - Calapt by Atari....
  318. o Changed widget sizing & placement to tidy things up a bit.
  319.  
  320. [17/1/96]
  321. o Added objc_find()
  322.  
  323. [18/1/96]
  324. o Added small font size support to object handler.
  325. o Added support for AES4.1 style GDOS font's in object tree's.
  326. o Made the default AES fonts & sizes a compile time option.
  327. o Fixed objc_find
  328. o Actually got some GEM programs to respond to their windowed dialogs!!!!
  329.  
  330. [19/1/96]
  331. o Programs run from xaaes.cnf are now launched in their home directories.
  332. o Added G_ICON support to the object handler.
  333. o Fixed the fill styles to be correct for object tree display.
  334.  
  335. [21/1/96]
  336. o Added G_CICON colour icon support to the object handler.
  337. o Added G_IMAGE support to the object handler.
  338.  
  339. [23/1/96]
  340. o Included a new root_window into the code - this is to provide support for
  341.   a desktop via the existing window system.
  342. o Added a new widget 'XAW_MENU' that any window can have - initially, only
  343.   the root window has it & that behaves like the GEM menu (taking over the
  344.   menu of the topped process).
  345. o Lattice C almost runs under XaAES now (thank god).
  346.  
  347. [26/1/96]
  348. o Coded the menu tree handler to go with the XAW_MENU widget.
  349. o Moved the mouse data stream into it's own pipe, seperate from the AES
  350.   command stream. This has improved mouse response a bit, as mouse
  351.   packets now don't get bogged down in amongst the client data (if mouse
  352.   & client packets arrive at the same time, they both get processed
  353.   but the mouse gets done first).
  354. o Modified the mouse server to use the new data pipe, and improved single
  355.   click response.
  356. o Added a check for mouse movement in the mouse server double click wait
  357.   loop. Big improvement, click and drag now registers with no delay at all...
  358. o Added menu_bar() function
  359. o Added menu_tnormal()
  360. o Added menu_icheck()
  361. o Added menu_ienable()
  362. o Added menu_text()
  363. o Extened the XA_CLIENT structure to include a pointer to each client's standard
  364.   GEM menu bar.
  365. o Added appl_getinfo()
  366.  
  367. =====================================================================================
  368. Big landmark here. I finally got Lattice C to load & run correctly under XaAES
  369. - it's not a lot of use yet as I've not done a file selector or a lot of the
  370. forms code....but the bloody thing at least gives me the menu's and an edit window.
  371.  
  372. Also, as I've managed to get to the bottom of the click-drag bug, the response time
  373. is way up - faster than AES4.1 at any rate!!!!
  374. =====================================================================================
  375.  
  376. [28/1/96]
  377. o Added G_STRING,G_FTEXT & G_FBOXTEXT support to the object handler.
  378. o Added form_dial() call.
  379. o CTRL+ALT+TAB now swaps menu-bars between active clients.
  380. o Improved menu handling a bit.
  381. o Added menu_register().
  382. o Added graf_growbox()/shrinkbox()
  383. o Added graf_movebox()
  384. o Added appl_find()
  385. o My life is complete - Yukon (the solitaire game) runs under XaAES almost perfectly....
  386.  
  387. [29/1/96]
  388. o Thanks to the MiNT mailling list for pointing out that there is a Tmalarm() call for
  389.   millisecond resolution alarm signals....evnt_timer() is now much closer to the
  390.   'real thing'.
  391.  
  392. [30/1/96]
  393. o Improved wind_calc() to actually get borders right without messing about examining
  394.   each individual widget.
  395. o Small optimisation of the client redraw list handling to clip just to the work area
  396.   instead of the window.
  397. o Added support for selected objects in the object tree hander.
  398. o Added support for 3D object flags in the object tree hander.
  399. o Added SHADOW flag support in the object tree handler.
  400. o Added G_BUTTON objects.
  401.  
  402. [31/1/96]
  403. o Added graf_watchbox() function
  404. o Added form_button() function (no text field support at the moment)
  405. o appl_init() now supports the AES4.0 extended information about system font sizes.
  406. o Added a kludge for the strange illegal / undocumented call that TOSWIN makes on
  407.   startup (you can find it in HANDLER.C).
  408.  
  409. [1/2/96]
  410. o Fixed the keyboard & mouse response problem when using evnt_multi() with a timer
  411.   - the un-used timers were staying in the delta queue if they hadn't gone off when
  412.   the first alternative event occurred, and then interfering with subsequent key/mouse
  413.   events.
  414.  
  415. [5/2/96]
  416. o Added a simple console window (to be honest it's a bit crap....)
  417. o Added a new call 'short appl_pipe(void);' - this returns the file handle of the
  418.   clients reply pipe so they can use non-blocking calls & handle piped replies
  419.   themselves.
  420. o Re-worked the keyboard handling (again) to try and fix the lost characters problem.
  421. o The client reply pipe handle can now be found in the AES global array at global[12].
  422.  
  423. =====================================================================================
  424. Well, no way to delay it any further.......techie beta 1 went out today.
  425. =====================================================================================
  426.  
  427. [6/2/96]
  428. o Fixed a bug in drawing shadowed objects.
  429. o (ref:31/1/96) Thanks to Eric Smith for pointing out that the funny call that TOSWIN
  430.   was making is in fact vq_gdos(), though why Atari had to add a special case call
  431.   is beyond me......what was wrong with the ordinary VDI magic number?
  432. o Added support in the low-level trap handler for the '$c9' method of testing for an
  433.   installed AES.
  434.  
  435. [7/2/96]
  436. o Object-Tree widgets now work for types other than menus.
  437. o Added HIDETREE support to the tree display routines.
  438. o Now got a nice set of pretty icons for alert boxes....
  439.   These are currently loaded from an external resource file - I'll embedd them when
  440.   things are a bit more settled.
  441. o Re-worked the alert box handler (the other was just a debugging aid).
  442.   Now supports all AES4.1 icons, and a couple more, returns the correct button,
  443.   and uses proper 3D push buttons.
  444. o Alerts now displayed in windows, and don't block other processes.
  445. o AES owned windows now don't recieve topped/bottomed messages - they are done
  446.   automatically. (eg. the AES owns alert windows, but doesn't need the messages, so
  447.   we can just top & bottom the alert windows immediately)
  448. o Extended window attribute NO_REDRAWS stops windows from generating WM_REDRAW messages.
  449. o Added semaphore locking to the sensitive areas of the Trap handler (just in case).
  450. o Another extended window attribute, STORE_BACK. If this is set, a window will preserve
  451.   it's own background (like alerts do under normal GEM). Useful for alert windows,
  452.   where the client is asleep & cann't respond to redraw messages, and also to provide
  453. o Alerts use STORE_BACK window attribute.
  454.  
  455. [8/2/96]
  456. o New search order for xaaes.cnf:
  457.    .\xaaes.cnf
  458.    u:\c\mint\xaaes.cnf
  459.    u:\c\multitos\xaaes.cnf
  460.    u:\c\xaaes.cnf
  461. o New keyboard combo's
  462.    ALT+CTRL+TAB   - swap app menus (not top app) (ok, that's an old one, but it's
  463.                     documented now)
  464.    ALT+CTRL+L     - list current clients to DIAGS/'debug device'
  465.    ALT+CTRL+K     - tidy up: cleans up after any apps that died without calling
  466.                     appl_exit()
  467.  
  468. [9/2/96]
  469. o Added form_do() call (only creates & displays non-modal dialog window at the moment)
  470.  
  471. [10/2/96]
  472. o Implemented the form_do() click handler. Doesn't know about editable text fields yet,
  473.   but does do radio buttons, hidden, disabled, exit & touchexit.
  474. o Added scrap_read() & scrap_write()
  475. o New command CLIPBOARD in the xaaes.cnf file allows the default clipboard path to be
  476.   set on startup.
  477. o Modified the initialisation code so that apps that weren't launched with shell_write()
  478.   don't crash xaaes when they call shell_read().
  479. o Added a fix-up for menu trees, as some resource files don't have the right spacing &
  480.   stuff (and my resource loader doesn't do them).
  481. o Added objc_change() call.
  482. o Form_dial(FMD_START) now creates the window to put a dialog in....this helps
  483.   with programs that call FMD_START, then handle their own dialog interaction.
  484. o Argggghhhhh. Where was all my memory going? Found (and fixed) a massive memory leak
  485.   in the menu handler. Every time a menu was dropped down, a new buffer was allocated
  486.   - but I never got round to freeing them......sorted it out now though.
  487. o Fixed the transparent G_BOX problem in the object tree routines.
  488. o Fixed vertical positioning problem with small texts in dialogs.
  489. o The inherited default dialog background colour mode is now supported by the
  490.   object tree routines.
  491.  
  492. =====================================================================================
  493. Hmmm. Beta 1 was a bit of a disaster, very few people could make it work, and there
  494. were a lot of real problems with it. Things are much better now though, with several
  495. programs running perfectly (Z'Org for instance).
  496. =====================================================================================
  497.  
  498. [11/2/96]
  499. o Extended the applications list to include what apps are waiting for.
  500. o Included a new ALT+CTRL+D key combo to dump system info.
  501. o Re-coded the mouse clicks handler, so the app that owns the mouse lock
  502.   gets all clicks, even those outside of it's own windos.
  503. o Finished form_button()
  504.  
  505. =====================================================================================
  506. The XaAES mailling list starts today.
  507. Had a play with the competition (oAESis), and found it doesn't run as many programs
  508. as XaAES does - but it does run some XaAES doesn't (like Lines for instance).
  509. Got XaAES to run Pagestream today, which cheered me up.
  510. Checked out the performance of XaAES compared to oAESis - oops....oAESis piss's
  511. all over XaAES in terms of speed....
  512. =====================================================================================
  513.  
  514. [12/2/96]
  515. o Added a call_direct interface in the trap handler for functions that don't
  516.   impact on main memory to any great extent.....this by passes the pipe's queue
  517.   to call routines direct. I know, it's gonna be a pig to debug...but the performance
  518.   gain you get from doing it is amazing - TOSWIN runs so fast I didn't believe it
  519.   at first.... It doesn't have to be used for everything, just for common 'quickie'
  520.   calls. NOTE: I've not used this generally at the moment to avoid memory ownership
  521.   problems - and it makes things very unstable......
  522. o Re-coded wind_update to use semaphores & call_direct....first big improvement
  523.   from the new system.
  524.  
  525. [13/2/96]
  526. o Nicked the rc_intersect code from oAESis - it was better than mine.
  527. o Re-worked the rectangle list generation to use the above poached code.
  528. o Added loads more semaphore locking on various ops (mostly in c_window.c).
  529. o More work on the trap handler.
  530. o Appl_init() now allocates a private stack for use during AES calls.
  531.  
  532. =====================================================================================
  533. Got Johan's GCC diffs - gotta find time to include them (probably over the weekend).
  534. Got Martin's Lattice diffs.
  535. =====================================================================================
  536.  
  537. [14/2/96]
  538. o Applied Martin Koehling's diffs - here's his summary of what got fixed....
  539.  
  540. ----Quote----
  541. This is my first take on hacking XaAES; a context diff (relative to
  542. the beta1 release) is appended to this message. [CRAIG NOTE: I've applied
  543. the diffs already.....]
  544.  
  545. Summary of changes (I hope I didn't forget anything):
  546.  
  547. a_handler.s:
  548.         Modified the TRAP2 handler to use the XBRA protocol (no
  549.         more self modifying code, too).
  550. a_handler.s:
  551.         BUGFIX: TRAP2 handler now saves *all* modified registers (AFAIK,
  552.         GEM AES does the same, and some APPs/TSRs rely on this [undocumented]
  553.         behaviour)
  554. handler.c:
  555.         Modified hook_into_vector to use Setexc() instead of directly
  556.         hacking the exception vector table; patch_handler() is no longer
  557.         needed. New function unhook_from_vector().
  558. handler.c:
  559.         Added __saveds keyword to XA_handler(), thus eliminating the need
  560.         for `far' data.
  561. appl_init.c:
  562.         Removed a few `far' keywords.
  563. resource.c:
  564.         BUGFIX: improved obfix() to be more GEM AES compatible (fractional
  565.         offsets, ob_width==80 special case).
  566. std_widg.c:
  567.         BUGFIX: wind->widgets[XAW_MENU].w wasn't initialized at all.
  568.         NOTE: there seems to be still another missing-initialization bug
  569.         lurking somewhere - when the FASTLOAD bit is *set*, xaaes.tos
  570.         sometimes simply hangs when I start it from the desktop; this
  571.         does *not* happen when xaaes.tos was started from mint.cnf
  572.         (->clean memory) or when the FASTLOAD bit is *cleared*...
  573. bootup.c:
  574.         If there are less than 16 colors (or was that `colours'? ;-)) available
  575.         (like on my monochrome monitor), initialize display.dial_colours
  576.         differently; the display is still terribly ugly, but at least now
  577.         I can *see* something besides black text on black ground... :-)
  578. bootup.c:
  579.         BUGFIX: use vqt_attributes() (instead of vqt_extend()) to initialize
  580.         display.c_max_w/display.c_max_h - this yields the correct values
  581.         8 and 16 for the `monochrome' system font.
  582. bootup.c:
  583.         BUGFIX: use obfix() in SYSTEM_MENU initialization; don't forget
  584.         SYSTEM_MENU[16] :-).
  585. bootup.c:
  586.         Use a different method for AUTO folder detection: after an
  587.         appl_init() call, check if global[0] (AES version) is still
  588.         zero - this indicates that no AES is present...
  589.         (This method has been documented and successfully used for
  590.         years, and it's inituitively "cleaner" than the original one; in
  591.         addition, it obviates the need for the isauto.s module.)
  592.         (appl_init() should have been called anyway since graf_handle()
  593.         is called later...)
  594. bootup.c:
  595.         New function `Cleanup()' that closes workstations, restores
  596.         the TRAP vector, calls appl_exit()...
  597.         Still quite incomplete (and currently unused anyway).
  598. Others:
  599.         Some changes to header files to reflect the above modifications.
  600.         Added `#include <memory.h>' to a few modules to get rid of `No
  601.         prototype declared for function' warning (some are still missing).
  602. ----Un-Quote----
  603.   All of the above went in apart from the obfix() stuff and register save mod,
  604.   which I'd already done.
  605.   Seem's to have improved stability a lot, especially for call-direct ops, and
  606.   there's a lot of other good stuff like the XBRA support in there as well.
  607.  
  608. [15/2/96]
  609. o Fixed a bug in the draw_object_tree() routine (HIDETREE wasn't handled properly).
  610. o Enabled direct call for more op-codes to improve performance.
  611.  
  612. [16/2/96]
  613. o Included Mario Becroft's monochrome widget set as a compile time option.
  614. o Tested XaAES in mono for the first time in ages....hmmm. Certainly works,
  615.   but you cann't see windows except for the widgets. Needs some work I feel....
  616.  
  617. [17/2/96]
  618. o Added shel_find() (uses the standard MiNT enviroment)
  619. o Added shel_envrn()
  620. o New keyboard combo ALT+CTRL+R - attempts to recover control of a hung system.
  621. o Added mode 1 (SWM_LAUNCHNOW) support to shell_write().
  622. o Added a SIGCHLD handler to spot exitting children.
  623. o appl_exit now calls Pwait() to get the app exit status
  624.  
  625. [18/2/96]
  626. o Removed all the delta-queue stuff, and replaced the timer events with a more
  627.   advanced and versatile method based on Evan's idea of using Fselect time-outs instead
  628.   of SIGALRM signals. This does away with having to maintain the delta queue & simplifies
  629.   cancelling evnt_multi. It does mean that the trap handler is a bit more complex now...
  630.  
  631. =====================================================================================
  632. Beta 2 released via Johan's ftp site today
  633. =====================================================================================
  634.  
  635. [19/2/96]
  636. o Added a check for missing system resource file (exit gracefully instead of bus error).
  637. o Fixed a bug in the SIGCHLD handler (wasn't extracting the child pid correctly)
  638.   - dieing children are now caught correctly and clean-up happens automatically.
  639. o Added new 'About XaAES...' dialog.
  640. o Added handler for clicks on the system default menubar - only 'About' is actually
  641.   used at the moment, but at least the code is there now.
  642. o Fixed the CTRL+ALT+TAB app switch so that you can always get to the system menu if you
  643.   need to.
  644.  
  645. [20/2/96]
  646. o Integrated Martin Koehling's 2nd set of diffs - here's Martin's list of changes:
  647.  
  648. ----Quote----
  649. bootup.c:
  650.    Remove Semaphores in Cleanup().
  651.    Print an error message and call Cleanup() & exit when opening of
  652.    KBD_device failed.
  653.    Ditto when LoadResources("system.rsc") failed.
  654.    (The latter would have saved me two to three hours of bug-hunting
  655.    yesterday...)
  656. resource.c:
  657.    Removed auto-freeing of existing resource in rsrc_load handler;
  658.    under GEM AES, programs *can* have multiple resources.
  659.    (This function still needs some more work - in particular,
  660.    resource memory should *always* be owned by the APP!)
  661. xa_aes.prj (separate file):
  662.    Removed all local compiler options - apparently they had just
  663.    accumulated over time and served no practical purpose...
  664.    (problem of of the Lattice IDE)
  665.    [CRAIGS NOTE: They are a side effect of how I locally turn on diagnostics output
  666.     when I'm debugging: I only define GENERATE_DIAGS for the modules I'm working on...]
  667. Others:
  668.    Lots and lots of added #includes; XaAES should now compile without
  669.    any warnings even with `Enforce function prototypes' enabled - this
  670.    should make porting XaAES to other compilers (or changing the `int'
  671.    size, or changing the parameter passing conventions) somewhat
  672.    easier...
  673. ----Unquote----
  674.  
  675. ...And yes, it does compile with no warnings even with Enforced prototypes.
  676.  
  677. o Added a new auto-redraw callback function to windows, to allow the work area
  678.   to be redraw automatically without sending redraw messages or walking the
  679.   rectangle list. This is mainly aimed at displaying the root window.....but it
  680.   could be useful for other things?
  681. o Added the desktop/root window object tree.
  682. o Made the root window a NO_MESSAGES type window - we had a memory leak there, as
  683.   the AES never checks for messages to itself, redraws were just building up...and
  684.   it can redraw itself using auto-redraw, so there is no to send messages.
  685. o Removed the erase_nontopped_window() function as the desktop support
  686.   made it redundant.
  687. o Changed the way window redraws are calculated in display_windows_below()
  688.   to prevent all windows below being drawn even when they are obscured by
  689.   other windows.
  690.  
  691. [21/2/96]
  692. o Added wind_get(...,WF_NEWDESK,...)
  693. o Added wind_set(...,WF_NEWDESK,...)
  694. o Integrated Martin's bugfix for the semaphores version of wind_update() function
  695.   (with a small fix to a bug in Martin's version).
  696. o Added a new wind_set() mode WF_AUTOREDRAW. This allows a windows auto-redraw function
  697.   to be set. Takes a pointer to a WindowCallback type function, passed in
  698.   parm1 (hi word) & parm2 (low word):
  699.    short my_redraw_function(XA_WINDOW *window)
  700.    {
  701.       /* Do the redraw, using the coords from the XA_WINDOW structure */
  702.    }
  703.  
  704.    void set_a_redraw(void)
  705.    {
  706.       WindowCallback rd=&my_redraw_function;
  707.       wind_set(my_window_handle, WF_AUTOREDRAW,
  708.          (unsigned short)((rd&0xffff0000L)>>16), (unsigned short)(rd&0xffffL), 0,0);
  709.    }
  710. o Added PROGDEF support to the object tree handler.
  711. o Went over most of the source replacing vs_clip() with set_clip() 'coz the
  712.   PROGDEF's needed to know the current AES clipping rectangle :(
  713.   (I'm dead pissed off about that, but cann't see a way round it).
  714. o Added appl_write() function - direct result is that AV-PROTOCOL applications
  715.   (GEMVIEW for example) now work under XaAES when run with Thing.
  716.  
  717. =====================================================================================
  718. Hey!!! 'Thing' now display's it's desktop & directory windows properly, with colour
  719. icons, backdrops, drag & drop onto the desktop....the works!!!
  720.  
  721. The redraw algorithm is still very iffy - the whole desktop gets redrawn far to
  722. often.
  723. =====================================================================================
  724.  
  725. [22/2/96]
  726. o Improved the menu_xxx functions to prevent the redrawing of the whole desktop
  727.   each time.
  728. o Added wind_set(.., WF_STOREBACK, ...) to allow user programs to set their own
  729.   store background property.
  730.  
  731. [24/2/96]
  732. o Hacked around with the window redraws to get rid of some more root redraws.
  733. o Fixed graf_handle() to give correct character cell sizes.
  734. o Root window clicks now go to the current owner of the desktop (so clicking on
  735.   Thing's desktop icons works).
  736. o Fixed form_button() - Thing's dialogs work now.
  737.  
  738. [25/2/96]
  739. o Ran Johan's xlcc2gcc program over the source tree to remove all C++ style
  740.   comments.
  741. o Applied about 2 thirds of Thomas' diffs.
  742.   - most notable fix is that shel_wrt() works properly now (mode 0 at least).
  743.  
  744. [2/3/96]
  745. o Sorted out some problems with window list locking, so that wind_get()
  746.   could move over to direct call. This fixes the major speed problem
  747.   XaAES had, and also seems to have made things a lot more stable (but I
  748.   always say that don't I ?).
  749. o Removed the funny sliders that everyone was complaining about.
  750.  
  751.  
  752. [3/3/96]
  753. o Added appl_search()
  754. o Fixed problem with window slider paging (added a click behaviour to the widgets).
  755. o Added drop shadows to windows.
  756. o Reduced size of object shadows to 2 pixels to match GEM (some apps make assumptions
  757.   about this when storing backgrounds).
  758. o Object tree handler: CICON's will use nest best colour depth if an exact match cannot
  759.   be found (eg. if there is a 16 colour icon, it will be used in 256 mode if there is no
  760.   256 icons).
  761.  
  762. [4/3/96]
  763. o Menu's only redraw sections that are changing rather than the whole menu.
  764. o Changed to a more 'GEM' method of highlighting menu options.
  765. o Fixed CICON's (again). Resource loader now uprates all CICON's to the current
  766.   screen colour depth on loading (eg. 4 bit plane will convert to 8 bit plane when
  767.   run in 256 colour mode). There's still some nasty bugs in this code....
  768.  
  769. [5/3/96]
  770. o Applied Martin Koehling's appl_getinfo() patch.
  771.   This fixed a couple of problems with one or two apps - notably, 7UP & Kandinsky
  772.   work now because of this...
  773.  
  774. ===============================================
  775. HARDDRIVE CRASH
  776. - Luck recovery....
  777. ===============================================
  778.  
  779. =====================================================================================
  780. Beta 3 released.
  781. =====================================================================================
  782.  
  783. [8/3/96]
  784. o Fixed form_button() so that objects without their selectable attribute set still
  785.   return if they are EXIT or TOUCHEXIT. This means that Thing's scrolling lists in
  786.   dialogs now work correctly.
  787.  
  788. [9/3/96]
  789. o Started adding underlying support for keyboard entry into forms.
  790. o Added a new callback attribute for windows to handle keyboard entry. If an edit field
  791.   is specified in form_do() then this attribute is set for the window containing the
  792.   form.
  793. o New ob_flag bit IS_EDIT tags the current edit field so that the object drawing
  794.   routines know to show the cursor.
  795.  
  796. [10/3/96]
  797. o Added support to the form click handler to change the current edit field if an EDITABLE
  798.   object is clicked on.
  799. o Fixed non-3D button drawing.
  800. o Fixed radio button redraw.
  801. o Fixed the CTRL+ALT+R 'recover control' combo so that XaAES doesn't crash when it's used.
  802. o Fixed appl_search() to not return illegal values for AES id's.
  803. o SIGCHLD handler doesn't try to do any clean-up now, it just sends the
  804.   XA_CLIENT_EXIT message to the kernal, and the standard cleanup handles it.
  805.  
  806. [11/3/96]
  807. o Fixed shel_write() TOS program launch to drop the correct info into the
  808.   TOSRUN pipe for TOSWIN to run the TOS program for you.
  809.  
  810. [20/3/96]
  811. o Applied 2 sets of diffs from Martin (see 5diff & 6diff).
  812.  
  813. [21/3/96]
  814. o Coded the keyboard handler for form_do(). The following are supported:
  815.   Field selection:
  816.       TAB or DOWN-ARROW    - next field
  817.       UP-ARROW             - previous field
  818.       SHIFT+DOWN-ARROW     - last field
  819.       SHIFT+UP-ARROW       - first field
  820.    Cursor movement:
  821.       RIGHT-ARROW          - cursor right
  822.       LEFT-ARROW           - cursor left
  823.       SHIFT+RIGHT-ARROW    - cursor to end of field
  824.       SHIFT+LEFT-ARROR or
  825.          CLR/HOME          - cursor to start of field
  826.    Editting:
  827.       ESCAPE               - clear field
  828.       DEL                  - delete character under cursor
  829.       BACKSPACE            - delete character behind cursor
  830.  
  831.    other keys go straight into the text field.
  832.  
  833.  
  834. [22/3/96]
  835. o Added the display function for the iconify widget.
  836. o Appl_getinfo(11) modified to indicate presence of iconifier widget.
  837. o Added wind_set(.., WF_ICONIFY, ...) support.
  838. o Added wind_get(.., WF_ICONIFY, ...) support.
  839. o Click on iconify widget now sends WM_ICONIFY message to client.
  840.  
  841. [23/3/96]
  842. o Added wind_set(.., WF_UNICONIFY, ...) support.
  843. o Added wind_get(.., WF_UNICONIFY, ...) support.
  844. o Click on iconify widget of an iconified window now sends WM_UNICONIFY message
  845.   to client.
  846. o Double-click on title widget of an iconified window now also sends WM_UNICONIFY message
  847.   to client.
  848.  
  849. =====================================================================================
  850. After discussing it with Martin, we've decided to ditch the big clients[] array in
  851. the near future. The use of the Martin's Pid2Client() macro is an interim thing. Once all
  852. direct access to the clients[] array has been replaced with Pid2Client() we can replace
  853. the array with a dynamic structure that doesn't swallow 120K of RAM to no good reason.
  854. =====================================================================================
  855.  
  856. [24/3/96]
  857. o Another big diff from Martin Koehling:
  858.  
  859. ----Quote----
  860. objects.c, objects.h, many *.c:
  861.    BUGFIX:
  862.    Changed parameter list for set_clip() from `x1,y1,x2,y2' to `x,y,w,h'.
  863.    Changing all set_clip() calls accordingly removed many of the `+1'
  864.    errors, and saved a few bytes, too.
  865. objects.c:
  866.    clear_clip() now doesn't really turn clipping off but only sets the
  867.    clipping rectangle to the entire screen - this is safer since
  868.    otherwise memory areas outside the screen might be overwritten by
  869.    buggy code! (Probably depending on function called and VDI version...)
  870. rectlist.c:
  871.    BUGFIX:
  872.    Since the redraw problems had actually gotten *worse* after the
  873.    set_clip() changes (some bugs had apparently cancelled each other),
  874.    I first replaced rc_intersect() with a time-proven version; but this
  875.    wasn't the problem...
  876.    (I kept the new version because it's more readable and actually
  877.    about 50 bytes shorter than the original. :-))
  878.    The *real* bugs were in generate_rect_list(): after removing
  879.    several instances of `-1'/`+1', redraws work *much* better now...
  880.    (There are still a few problems - I suspect bugs in the calculation
  881.    of window work/border areas...)
  882. shellwrt.c, new_clnt.c, bootup.c:
  883.    BUGFIX:
  884.    shel_write() used to free the command line and the command
  885.    tail - much too early!
  886.    Moved this to XA_client_exit().
  887. wind_fns.c:
  888.    Added test-and-set-mode to wind_update() (BEG_UPDATE|0x100,
  889.    BEG_MCTRL|0x100); would somebody please try this out? ;-)
  890. appl_ini.c:
  891.    EXPERIMENTAL:
  892.    Put AES version number 1.4 (instead of 4.1) into global[] array;
  893.    possibly some programs are crashing because they expect MTOS (AES 4.x)
  894.    features to be present that are not yet implemented???
  895.    <CRAIG'S NOTE: This isn't such a good idea so I've #if'd it out of the binary>
  896. getinfo.c:
  897.    Some changes to info_tab[]:
  898.    - mode 4: indicate that appl_search() is implemented
  899.    - mode 10: indicate shel_write() modes supported
  900.    - mode 11: indicate `wind_update() check and set present'
  901. getinfo.c:
  902.    BUGFIX:
  903.    appl_find(NULL) should returns the AES process id of current
  904.    process, *not* the menu bar owner - at least according to all
  905.    documentation I have access to.
  906. getinfo.c:
  907.    appl_find("?AGI") now returns 0, indicating that appl_getinfo()
  908.    is understood by the current AES - normally this function is
  909.    only present in AES versions >= 4.0 (i.e. MTOS; old AES versions
  910.    display an "Illegal Function" alert instead).
  911.    The "?AGI" feature was invented by Martin Osieka for his
  912.    AES extension WINX, which adds appl_getinfo() (and other
  913.    things) to "old" AES versions; MagiC 4.0 (AES 3.99!) supports
  914.    "?AGI", too.
  915.    The proper way of checking for the presence of appl_getinfo()
  916.    is:
  917.    `has_appl_getinfo = (global[0]>=0x400) || (appl_find("?AGI")==0) ;'
  918. appl_ini.c, c_window.c, new_clnt.c:
  919.    Replaced direct accesses to clients[] array by Pid2Client() calls.
  920.  
  921. ----UnQuote----
  922.  
  923. o There was one thing in that diff that Martin seems to have forgotten he did
  924.   - if you hold down either shift key during startup, XaAES will swap to medium
  925.   res if it was being started in Low Res. It's not quite the all singing all
  926.   dancing res change we talked about on the mailling list yet, but it's sort of
  927.   a start isn't it?
  928. o Fixed window drop-shadow bug.
  929.  
  930. [27/3/96]
  931. o Added objc_edit()
  932. o Added form_keybd()
  933.  
  934. [28/3/96]
  935. o Added Martin's appl_ini() patch to get round an apparent MiNT pipe deletion bug.
  936.   (this is what was stopping lines.prg from working, see 8diff for details)
  937. o Debugged objc_edit()
  938. o Mono icons now display their text field correctly.
  939. o BOXTEXT's now get border properly.
  940.  
  941.  
  942. [29/3/96]
  943. o Added falcon video mode switches to the command line:
  944.       -video 0->3
  945.    where:
  946.       0 = 80 column, non-interlace, mono
  947.       1 = 80 column, non-interlace, 4 colour
  948.       2 = 80 column, non-interlace, 16 colour
  949.       3 = 80 column, non-interlace, 256 colour
  950.   These don't work very well at the moment, but do get round the NVDI2.5 problem.
  951. o Added Shutdown option to the XaAES system menu. This isn't 100% yet, but it's a start...
  952.   Shutdown will kill all clients, and exit XaAES - but you cann't get back into XaAES
  953.   again at the moment, so I've obviously missed something....
  954.  
  955.  
  956. [31/3/96]
  957. o Added new functions (OBJECT*)CloneForm(OBJECT*) and (void)DeleteClone(OBJECT*) to
  958.   create copies of the resource templates in SYSTEM.RSC (this stops multiple clients
  959.   using alerts from interfering with one another).
  960. o Alert box handler now uses the CloneForm/DeleteClone routines.
  961. o Added proper XBRA unhook to restore the correst AES trap vector.
  962. o Major change to the architecture of XaAES:
  963.   The XaAES.cmd pipe is no longer a global file handle. The reason for this is to ensure
  964.   that all XaAES's pipes get deleted when the system is shutdown - otherwise if you
  965.   restarted XaAES without re-booting, the new server couldn't open the command pipe.
  966.   The new approach is to have XaAES.cmd as opened by one process at a time, and then only
  967.   during appl_init(). The process uses XaAES.cmd as an 'introduction pipe' to send an
  968.   XA_NEW_CLIENT message, then closes it again. The main body of commands comes
  969.   from what used to be the clients reply pipe (this is now a bi-directional pipe), and
  970.   the kernal selects on all the client pipes at the same time.
  971.   This is a pretty major change, and I've only done it because several people asked
  972.   for a clean shutdown/restart procedure without having to reboot the machine. Ok, you've
  973.   got it.
  974. o 'Shutdown' works correctly, and XaAES can be re-started as many times as you like (only
  975.   one server at a time though) without rebooting the machine (from a command line).
  976. o MOUSESRV opens it's comms pipe as O_RDWR to allow it to be deleted again.
  977. o SIGINT and SIGQUIT are now caught and cause a graceful shutdown (exactly like selecting
  978.   the 'Shutdown' menu option).
  979.  
  980. =====================================================================================
  981. Beta 4 released.
  982. =====================================================================================
  983.  
  984. [2/4/96]
  985. o Johan mailled me James Cox's MooseServ replacement for the MOUS_SRV mouse
  986.   program (I missed it when he first posted it). It's a great improvement
  987.   over the original that I wrote, a proper MiNT device, all coded in
  988.   assembler - the full works. It's gotta become the standard XaAES mouse
  989.   handler starting from now - mainly because it does away with the busy wait
  990.   loop in the mouse handler, but also because double click response is
  991.   much better than it was in my version.
  992.  
  993. [9/4/96]
  994. o Fixed graf_watchbox() - sorry, that was an error in Atari Compendium
  995.   as regards where parameters were passed (that was why Everest didn't work up to
  996.   now).
  997. o Added some code to not select objects that aren't selectable in
  998.   form_butn().
  999. o Added CH_EXIT message to the SIGCHLD handler. This is now sent to the 'AES parent'
  1000.   of an app. This is different to the MiNT parent - all client apps should be
  1001.   children of the XaAES server, bgut their 'AES parent' is the app that launched them
  1002.   with shel_write().
  1003. o Shel_write() mode 1 now blocks the client (as it should), and the SIGCHLD handler
  1004.   wakes it up again when the child exits.
  1005.  
  1006. [12/4/96]
  1007. o Johan found the problem with running MGIF, so I've fixed it - menu_text() was just
  1008.   changing the pointer to the menu text, instead of copying the text over the existing
  1009.   data (as it should have done).
  1010.  
  1011. [16/4/96]
  1012. o Fixed a bug in shel_write() - XaAES was corrupting the clients copy of the command
  1013.   when it launched the new program, so if the client attempted to re-use the command
  1014.   string it was invalid (this showed up when running AntMail 0.7.5).
  1015.  
  1016. [17/4/96]
  1017. o Added CHECKED & CROSSED support to the object display routines.
  1018. o Added the new XaAES/oAESis extended shel_write() stuff to allow explicit setting
  1019.   of user/group id's when a child is launched. Haven't done the UID/GID inheritance
  1020.   stuff yet (that will need a little more work).
  1021.  
  1022. [18/4/96]
  1023. o Added tear away menu bar's (CTRL+click on a menu to tear away). This isn't a final
  1024.   thing, it's just really to show how easy it is to add this sort of thing to XaAES.
  1025. o Added support for NO_WORK window attribute, so a window can have no work area at all.
  1026. o Alert box's & form_do() now use NO_WORK windows.
  1027. o Alert box default button set correctly (although the keypress is ignored at the moment).
  1028. o Disabled the OS_SPECIAL memory patch (new switch in XA_DEFS.H 'DODGY_MEMORY_PROTECTION')
  1029.   as I think it causes a massive memory leak in the MiNT kernal.
  1030.  
  1031. [19/4/96]
  1032. o Various fixes to the object tree drawing routines.
  1033.   - Finally sorted out the black bars problem.
  1034.   - Selected text is now highlighted.
  1035.  
  1036. [25/4/96]
  1037. o The owner of the screen update flag now recieves all mouse input even
  1038.   if it hasn't grabbed the mouse flag.
  1039. o The owner of the screen update flag now recieves all keyboard input
  1040.   as well. These two patches help several programs to work better
  1041.   with the Selectric fileselector (notabley, Egale works now).
  1042. o Replaced form_do.c, forms.c & objcedit.c with Johan's patched
  1043.   versions - the form handling should work a little better now.
  1044. o Added hide/show cursor to the objc_draw & objc_change functions
  1045.   - this gets rid of almost all the 'mouse droppings' that we were
  1046.   suffering.
  1047.  
  1048. [26/4/96]
  1049. o Got a new version of the Moose (mouse) server from James Cox. The actual device
  1050.   driver is now a MiNT loadable device (XDD) and remains loaded all the time. Eventually
  1051.   we'll scrap the mousesrv program and use the device directly :)
  1052.  
  1053. [27/4/96]
  1054. o All OS functions now return unsigned long instead of short.
  1055. o Removed the 16 tick minimum on event timeouts - you can now do a timeout with 1.
  1056. o appl_init() & appl_exit() now block the client until the server process recieves
  1057.   the (de)registration message.
  1058. o appl_init() & appl_exit() no longer special cased (that was leftover from before
  1059.   I added the call direct interface).
  1060.  
  1061. [30/4/96]
  1062. o Applied Martin's object display diffs:
  1063.  
  1064. ---Quote---
  1065.  
  1066. xa_globl.h:
  1067. -  Added macros FirstClient() and NextClient() - useful for all
  1068.    functions traversing the entire client table (used in bootup.c
  1069.    only at the moment).
  1070.  
  1071. objects.c, draw_2d_box(): **************Martin's version of this is a bit duff [Craig]
  1072. -  Rewritten completely (outside/inside borders were reversed [IIRC],
  1073.    outside borders looked rather strange).
  1074.  
  1075. objects.c, display_object():
  1076. -  Lots and lots of changes - object appearance should match
  1077.    GEM AES much better now!
  1078. -  Rewrote SELECTED handling in mono (<16 colors) mode - this
  1079.    fixed the "object text in SELECTED objects vanishes in mono
  1080.    mode" problem.
  1081. -  Shadowing and outlining objects now works correctly.
  1082. -  Fixed colorword->opaque handling (which does only apply to
  1083.    text within an object, not to object body).
  1084. -  Slightly changed USERDEF handling: the user function is
  1085.    supposed to return the ob_state bits that still need to
  1086.    be handled by the AES; since all documentation on this
  1087.    topic is *very* vague (and earlier experiments weren't
  1088.    conclusive either), I'm not *quite* sure if my change
  1089.    is correct - but it doesn't appear to break anything!
  1090. -  Added support for object states CHECKED, CROSSED, DISABLED.
  1091.  
  1092.    ********* NOTE: *********
  1093.    I did *NOT* test all of this in ">=16 color" modes yet - but
  1094.    I hope my changes didn't break anything; 3D objects should be
  1095.    unchanged, too...
  1096.    COLOR USERS: PLEASE TEST THIS!
  1097.  
  1098. objects.c, draw_object_tree():
  1099. -  Added v_hide_c() and v_show_c() - the caller doesn't need to
  1100.    call this anymore.
  1101.  
  1102. form_do.c, click_object_widget():
  1103. -  It wasn't possible to de-select a SELECTED object by clicking
  1104.    on it - on the screen it was de-selected, but internally the
  1105.    SELECTED bit got set again!
  1106.  
  1107. forms.c, XA_form_button():
  1108. -  Fixed width/height parameters of a set_clip() call (overlooked
  1109.    last time).
  1110. -  Don't SELECT a TOUCHEXIT object if it isn't SELECTABLE, too.
  1111.    (Actually, there are still several other special cases not
  1112.    handled quite correctly - but I think this can wait...)
  1113.  
  1114. frm_alrt.c, do_form_alert():
  1115. -  Set interior color of alert box to "system background color"
  1116.    in "monochrome" (<16 colors) mode.
  1117. -  Make alert buttons 2D in monochrome mode (color buttons are
  1118.    still "black text on black background")
  1119.  
  1120. mousesrv.c:
  1121. -  Added a SIGTERM handler, allowing to restore interrupt vectors
  1122.    before termination.
  1123.    (I'm not quite sure why nobody reported any problems with the
  1124.    SHUTDOWN handling - I regularly had crashes after terminating
  1125.    XaAES if it was started from the DESKTOP; possibly some AES
  1126.    versions are more forgiving in this area than my AES 3.2
  1127.    (TOS 2.06)??) (I'm still having trouble if I restart XaAES
  1128.    after a SHUTDOWN - but at least it works most of the time...)
  1129.  
  1130.    BTW: James Cox' moose server probably presents a *major*
  1131.    problem in this regard - it installs a device driver, and
  1132.    MiNT has *no* way to cleanly de-install one of those... :-(
  1133.    (*PLEASE*: correct me if I'm worng!!:-))
  1134.    This means basically that the server must *never* be killed;
  1135.    in addition, there needs to be a way (Fcntl?) to disable
  1136.    the server when XaAES exits, and to re-enable it when XaAES
  1137.    is started again...
  1138.  
  1139. bootup.c:
  1140. -  Send SIGTERM instead of SIGKILL to the mouse server - SIGKILL
  1141.    can't be caught!
  1142. -  Wait for the mouse server's termination before proceeding
  1143.    (important!!!).
  1144. -  Send SIGTERM instead of SIGKILL to apps, too; probably XaAES
  1145.    *should* wait for the applications' termination, too - but I'll
  1146.    leave this alone for the moment...
  1147. -  Pass *physical* (not: virtual) workstation handle to mouse server;
  1148.    the docs are not very clear on this point - but this *seems* to
  1149.    be cleaner, since the VDI interrupt vectors are not a "per-
  1150.    vworkstation" resource...
  1151. -  Simplfied F_OS_SPECIAL setting: "u:\proc\.-1" refers to the
  1152.    current process (as documented in Appendix B of the MiNT 1.12
  1153.    docs).
  1154.    ********* BTW: re: "Why does XaAES still crash with memory
  1155.    protection on?"
  1156.    Craig: did you try setting the protection bits of MOUSESRV.TOS
  1157.    to SUPER? This is necessary since it contains interrupt handler
  1158.    code...
  1159.  
  1160. logo.c:
  1161. -  Added WM_BOTTOMED/WF_BOTTOM defs (not defined in my aes.h).
  1162.  
  1163. ---UnQuote---
  1164.  
  1165. [3/5/96]
  1166. o Finally got things working properly again after putting in Martin & Johan's
  1167.   form & object patches.
  1168.  
  1169. [4/5/96]
  1170. o Added loads of memory allocation error checking to try and cut down on crashes
  1171.   - seems to have improved things a bit.
  1172. o Fixed Johan's objc_edit() and forms keyboard handling code to correctly interpret
  1173.   valid characters (was locking out some perectly admisable characters).
  1174. o Another small change to the client startup/shutdown stuff - CH_EXIT is now sent
  1175.   again (parent field was being invalidated to soon). Multiple shutdown/restart
  1176.   sequences seem to work pretty well now.
  1177. o Extended client list reporting (when debug enabled) to show more info on each client.
  1178.  
  1179. [5/5/96]
  1180. o Added support for Braodcast (mode 9) shel_write()
  1181. o Added support for Shutdown (mode4) shel_write()
  1182. o Added support for Desk Accessory loading in shel_write() (mode 3).
  1183.   - actually, I blagged a couple of lines of assembler from oAESis 0.70
  1184.   to trick accs into loading correctly. Accs load & seem to behave correctly,
  1185.   but you cann't open them yet (they aren't in the menu anywhere yet).
  1186. o House keeping now gets done after a 2second inactivity OR 5000 OS request.
  1187.   This helps find dead clients more reliably....
  1188.  
  1189. [6/5/96]
  1190. o Loaded applications & ACCs are displayed in the desk menu, with a tick next
  1191.   to the one that owns the current root window menubar.
  1192. o ACC's are autoloaded on bootup. New xaaes.cnf directive ACCPATH allows you to
  1193.   set the path that ACC's will be loaded from. (default is c:\)
  1194. o ACC's are tagged in the desk menu so you can see which they are.
  1195. o Clicking on an ACC's menu entry sends AC_OPEN to the it.
  1196. o Clicking on an APP's menu entry gives it the root window menu & desktop.
  1197.  
  1198. [7/5/96]
  1199. o Put in Johan's new rectangle list handling code.
  1200.   Here's Johan's comments on what he's done:
  1201.  
  1202. ---Quote---
  1203. In 'rectlist.c' the old rc_intersect has been optimized a bit and there
  1204. are two other new static functions with almost the same function.
  1205.  
  1206. For external use there are two new functions:
  1207. create_work_list     -  Creates a second rectangle list, covering only the
  1208.                         parts that are within the window's work area.
  1209. invalidate_rect_list -  Marks all rectangle lists below a specified window
  1210.                         (including that one) as invalid. The rectangle
  1211.                         objects are deallocated, naturally.
  1212.  
  1213. Two other static functions take care of rectangle object allocation and
  1214. deallocation.
  1215.  
  1216. The diff files mostly remove unnecessary calls to generate_rect_list() and
  1217. add invalidate_rect_list() calls where needed.
  1218. ---Unquote---
  1219.  
  1220. o Added the check for out of clip objects that Johan suggested in 
  1221.   draw_object().
  1222.  
  1223. =====================================================================================
  1224. Beta 5 released.
  1225. This is an obscenely fast release. It's now officially a shit load 
  1226. faster than AES4.1 (my original aim). This is all thanks to Johan's 
  1227. work on the rectangle lists and the object clip fix (in the case of 
  1228. Thing's directory window scrolling), as well as my re-vamped 
  1229. evnt_multi().
  1230. =====================================================================================
  1231.  
  1232. [8/5/96]
  1233. o Stopped root window redrawing when first real window is opened.
  1234. o Fixed display bug when topping windows.
  1235. o Stopped whole root window redrawing when last window is closed.
  1236. o Added undocumented entry in applications global[] array that the EGEM library
  1237.   relies on (naughty of them), so ESSDecode, LHAshell, et al should all work now.
  1238.   (thankyou to the oAESis guys (namely Christer G) for sorting that out).
  1239.   
  1240. [9/5/96]
  1241. o Fixed mouse click drop through when clicking on menus.
  1242. o Menu titles are un-highlighted after selection.
  1243. o STORE_BACK windows (ie. dialogs) now stay on top, and you cann't
  1244.   move windows that are behind them.
  1245. o Fixed NO_MESSAGES type windows (dialogs again) when used with 
  1246.   Johan's rectangle list code.
  1247. o NO_WORK windows don't have the window borders drawn, they just get a
  1248.   plain filled rectangle instead.
  1249.  
  1250. [10/5/96]
  1251. o Small patch to shel_write() to make detecting type of program to launch in mode 0
  1252.   work a little better.
  1253. o Can now move windows off screen.
  1254.  
  1255. [11/5/96]
  1256. o Applied Martin Koehling's latest diffs:
  1257. resource.c:
  1258.    FixColourIconData() had a serious bug: if
  1259.    c->num_planes > display.planes, the end of an Mxalloc'ed
  1260.    memory block was overwritten; this was probably responsible
  1261.    for spurious crashes in `lowcolor' resolutions - for example,
  1262.    on my Mega ST XaAES Beta 0.5 *always* crashed during initialization
  1263.    if it was run from MINT.CNF!
  1264. resource.c:
  1265.    FixColourIconData() had another bug: the destination MFDB
  1266.    wasn't properly initialized (fd_stand in one case, fd_addr
  1267.    in another one) before vr_trnfrm(); I can't explain how
  1268.    this code could work at all...
  1269. xa_defs.h:
  1270.    During bug hunting, I added:
  1271.       #define malloc(m) calloc(m,1)
  1272.    I think it's a good idea to have allocated memory blocks
  1273.    initialized to zero - at least during debugging!
  1274. xa_globl.h:
  1275.    Added a typecast to get rid of a syntax error (Pid2Client(pid)->...
  1276.    didn't work).
  1277. objects.c:
  1278.    draw_2d_box() still has problems with *outside* borders; I've
  1279.    added my version (which is modeled closely after Atari's own
  1280.    algorithm) for easier comparison - if any shift key is pressed,
  1281.    the old version is used, otherwise my version...
  1282.    (No, I don't propose to leave this in XaAES 1.0!;-))
  1283.  
  1284. NOTE: Martin's version of draw_2d_box() doesn't work, so I've not put it
  1285. in.
  1286.  
  1287. o Widget bitmaps are now stored as icons in the system.rsc file.
  1288.   This means that one version of XaAES runs in all colour modes, and that
  1289.   widgets now appear correctly in 256 colour modes :)
  1290. o Fixed converting selected images of colour icons from one colour depth
  1291.   to a higher one.
  1292.  
  1293. [9/6/96]
  1294. o After a month of fiddling, finally got XaAES to talk to /dev/moose directly,
  1295.   so the seperate mouse server program is no longer required. This speeds
  1296.   things up a little as well because the extra overhead for the mouse pipe
  1297.   is removed.
  1298. o Sorted out some (if not all) of the problems with Johan's rectangle list code.
  1299.  
  1300. [14/6/96]
  1301. o When you click to drop down a menu, you can point at others to pull them down
  1302.   as well.
  1303. o "Click...hold...select-on-release" type selections added to the menubar handler.
  1304. o More fixes to rectangle list & window redraws.
  1305.  
  1306. =====================================================================================
  1307. Memory protection almost works now. Something in shel_write() breaks 
  1308. it if you issue shel_write() from any program apart from XaAES. It's 
  1309. strange, because the initial shel_write() calls when parsing xaaes.cnf 
  1310. don't break memory protection, but if you try to run something from 
  1311. Thing, XaAES will violate memory protection?
  1312. =====================================================================================
  1313.  
  1314. [16/6/96]
  1315. o Re-worked the object display code to use a jump table to seperate
  1316.   routines for each object type instead of the massive switch() 
  1317.   statements that were used before. This makes it easier to add new 
  1318.   object types and makes things a great easier to maintain (the old 
  1319.   version of display_object() was a real mess).
  1320. o Started adding new object type G_SLIST (scrolling list). ob_spec 
  1321.   should point to a SCROLL_INFO structure, which describes the actual 
  1322.   list. New functions in scrlobjc.c provide creation/addition/deletion
  1323.   support for scrolling list entries (as there will never be a 
  1324.   resource editor that supports them). I'll add an AES call interface 
  1325.   to these routines later.
  1326.  
  1327. [9/7/96]
  1328. o Added 'real-time' scrolling when dragging window sliders. This is a fairly minor
  1329.   mod in SCRLWIDG.C that uses the same set_widget_active() method as the arrow
  1330.   widgets. This option can be disabled in XA_DEFS.H using the REALTIME_SCROLL switch.
  1331.  
  1332. [10/7/96]
  1333. o Left hand button is now 'real-time' scroll, right is standard GEM scroll.
  1334.  
  1335.   
  1336. [24/7/96]
  1337. o Finished debugging realtime scrolling.
  1338. o G_SLIST objects now display pretty much correctly (in colour).
  1339. o Added "Task Manager" window, partly as I think it'll be useful
  1340.   and partly to test the G_SLIST object type (list of current
  1341.   AES clients).
  1342. o ALT+CTRL+L now opens the Task Manager.
  1343.  
  1344. ========================================================================
  1345. [2/8/96]
  1346. Got NVDI4 - argggh, now I know why people complain that XaAES
  1347. doesn't work very well with NVDI....stuff that worked with NVDI2.5
  1348. doesn't work at all with NVDI4.
  1349. ========================================================================
  1350.  
  1351. [6/8/96]
  1352. o Fixed NVDI4 compatibility.
  1353. o Reworked video mode select switches. -video now does ST/TT modes,
  1354.   new switch -fvideo does falcon special modes (via VsetScreen).
  1355.   Falcon owners can now access a decent selection of modes (like,
  1356.   2/4/16/256 color & loads of res's).
  1357.  
  1358. ========================================================================
  1359. [8/8/96]
  1360. Finally finished reboxing my falcon into an old Mac II box. They're a
  1361. perfect size to fit a falcon into.....now I can get back to doing some
  1362. serious work :)
  1363. ========================================================================
  1364.  
  1365. [19/9/96]
  1366. o Bit of a boob here - I managed to delete the latest history file,
  1367.   so I've reverted to a backup (oops). So, a summary of what got done
  1368.   before now:
  1369.   - File selector (uses Tamminen Eero's directory code with my own
  1370.     wildcards + scroller)
  1371.   - Scroll list objects with icons
  1372.   - Task manager kill function
  1373.   - Launch app
  1374.   - lots of minor bugfixes (but I cann't remember what they were).
  1375.  
  1376. [23/9/96]
  1377. o Finally fixed the bug in shell_write() that was breaking the
  1378.   memory protection...you can now run XaAES with MiNT memory 
  1379.   protection active!!!
  1380.  
  1381. ========================================================================
  1382. [16/10/96]
  1383. Deleted the hostory file by accident (again). Bugger. Here is a 
  1384. backup, with several of my most recent mods deleted.
  1385. ========================================================================
  1386.  
  1387. [16/10/96]
  1388. o Finished a (very) wide ranging overhall of the rectangle list
  1389.   handling. Reasons being: 
  1390.   1) My original scheme did naughty things like calling malloc() as a 
  1391.   result of wind_get() when generating WF_FIRSTXYWH. Ok when the
  1392.   command pipe was used for everything, a real no-no when wind_get()
  1393.   is called via the CALL_DIRECT method to improve performance. And 
  1394.   worse, my original code was dog slow as it re-generated the lists
  1395.   every time they were used, and called malloc() for every entry
  1396.   in every list individually.
  1397.   2) Johan's rect handling scheme also suffered from dodgy malloc's 
  1398.   in wind_get(), but not to the same extent as my original code. It
  1399.   was quicker as it re-used lists instead of regenerating every time,
  1400.   and used a block allocation scheme for list storage. Much faster,
  1401.   but the display bugs from it were pretty bad (I never managed to 
  1402.   chase them all).
  1403.   
  1404.   The new rectangle list handler takes the best ideas from Johan's
  1405.   code and incorporates them into a new scheme. Features of
  1406.   the new scheme are:
  1407.   - Memory is block allocated for each list via a single malloc().
  1408.   - Lists are re-used.
  1409.   - Lists are only re-generated when they have to be. The regeneration
  1410.     is more intelligent than the old verion in Johan's code as it
  1411.     uses a changed rectangle test as well as the original lower
  1412.     window test to check which windows have invalid lists.
  1413.   - The display glitches that dogged the last release are (I hope)
  1414.     all gone now.
  1415.   - No lists are generated (hence no memory is allocated) from within
  1416.     wind_get() so there is no danger of wind_get() breaking memory
  1417.     protection.
  1418.   
  1419.   This has taken bloody ages to do....the rect list stuff is integral
  1420.   to almost every aspect of the system!!!
  1421.  
  1422. [16/10/96]
  1423. o MiNT memory protection compatibility. Hurray for our side. The
  1424.   wind_get() generate_rectlist() calls were what was killing XaAES
  1425.   with memory protection turned on (it resulted in clients mallocing
  1426.   memory that would be tied into OS level structures but owned by
  1427.   client processes). Ta Da :) it works.....now, gotta do some thinking
  1428.   about intercepting VA_PROTOCOL messages and copying them into
  1429.   global tagged memory buffers to stop VA_PROTOCOL from breaking
  1430.   mem protection.....
  1431.  
  1432. [17/10/96]
  1433. o Added new functions to c_window.c for move and close windows. Should
  1434.   have done it ages ago really.... XAwind_set(WF_CURRXYWH) now
  1435.   just calls move_window() and XAwind_close() calls close_window().
  1436.  
  1437. [19/10/96]
  1438. o Added blit support to the move_window() function - top window only,
  1439.   as handling the rect lists for non-top windows will need some 
  1440.   thought. It still makes things 'feel' much faster though as the
  1441.   most common window move is the top one....
  1442.  
  1443. ========================================================================
  1444. [20/10/96]
  1445. Beta 6 Released
  1446. ========================================================================
  1447.